package modelo;

import java.sql.ResultSet;


import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

public class IngredienteDAO {

	public IngredienteDAO() {
		super();
	}

	public void registrarIngrediente(Ingrediente ingrediente) {
		String tiraSQL = "INSERT INTO ingrediente "+
		 				 "(codigoingrediente, descripcion, costo, valormax, valormin, existencia, status) "+
		 				 "VALUES ("+
		 				 "'"+ingrediente.getCodigoingrediente()+"', '"+ingrediente.getDescripcion()+
		 				"',"+ingrediente.getCosto()+","+ingrediente.getValormax()+","+ingrediente.getValormin()+
		 				","+ingrediente.getExistencia()+","+ingrediente.getStatus()+" )";
		Conexion.ejecutar(tiraSQL);
	}
	
	public List<Ingrediente> consultarIngredientes() {
		List<Ingrediente> ingredientes = new ArrayList<Ingrediente>();
		String tiraSQL = "SELECT * FROM ingrediente";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				String codigo = resultSet.getString("codigoingrediente");
				String descripcion = resultSet.getString("descripcion");
				float existencia = resultSet.getFloat("existencia");
				Ingrediente ingrediente = new Ingrediente(codigo, descripcion, 0, 0, 0, existencia, 0);
				ingredientes.add(ingrediente);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return ingredientes;
	}
	
	public Vector<String> llenarComboIngrediente(){
		Vector<String> vectoringrediente = new Vector<String>();
		String tiraSQL = "SELECT * FROM ingrediente";
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		try{
			while(resultSet.next()){
				String descripcion = resultSet.getString("descripcion");
				vectoringrediente.add(descripcion);
			}
		}
		catch(SQLException e) {
			e.printStackTrace();
		}
		return vectoringrediente;
	}
	
	public Ingrediente buscarIngrediente(String nombre) {
		Ingrediente ingrediente = new Ingrediente();
		ingrediente =null;
		String tiraSQL = "SELECT * FROM ingrediente WHERE descripcion= '"+nombre+"' ";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				
				String codigo = resultSet.getString("codigoingrediente");
				float costo = resultSet.getFloat("costo");
				int vmaximo = resultSet.getInt("valormax");
				int vminimo = resultSet.getInt("valormin");
				float existencia = resultSet.getFloat("existencia");
				int status  = resultSet.getInt("status");
				ingrediente = new Ingrediente(codigo, nombre, costo, vmaximo, vminimo, existencia, status);
				
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return ingrediente;
	}
	
	public Ingrediente recetaIngrediente(String codigo) {
		Ingrediente ingrediente = new Ingrediente();
		ingrediente =null;
		String tiraSQL = "SELECT * FROM ingrediente WHERE codigoingrediente= ANY '"
			+("Select codigoingrediente from detalleproducto where codigoproducto= '"+codigo+"'")+"' ";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				
				String codigoingrediente = resultSet.getString("codigoingrediente");
				String descripcion = resultSet.getString("descripcion");
				float costo = resultSet.getFloat("costo");
				int vmaximo = resultSet.getInt("valormax");
				int vminimo = resultSet.getInt("valormin");
				float existencia = resultSet.getFloat("existencia");
				int status  = resultSet.getInt("status");
				ingrediente = new Ingrediente(codigoingrediente, descripcion, costo, vmaximo, vminimo, existencia, status);
				
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		//JOptionPane.showMessageDialog(null, ingrediente);
		return ingrediente;
	}
	
	public void actualizarInventario(String codigo, float cantidad){
		float existencia=0;
		String tiraSQL = "SELECT existencia FROM ingrediente WHERE codigoingrediente= '"+codigo+"' ";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				existencia = resultSet.getFloat("existencia");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		existencia+=cantidad;
		
		String tiraSQL2 = "Update ingrediente set existencia = "
			+existencia+" where codigoingrediente = '"+codigo+"'";
		Conexion.ejecutar(tiraSQL2);
	}

	
}